package com.xique.park.bean.transform.web.mngType;

import com.xique.common.core.utils.SecurityUtils;
import com.xique.park.bean.domain.ParkCarMngtype;
import com.xique.park.bean.domain.ParkChargeCarFixed;
import com.xique.park.bean.request.web.mngType.MngTypeAddRequest;
import com.xique.park.bean.request.web.mngType.MngTypeEditRequest;
import com.xique.park.bean.vo.web.mngType.ParkCarMngTypeEditWebVo;
import lombok.experimental.UtilityClass;
import org.apache.commons.lang.StringUtils;

/**
 * ParkCarMngTypeTransform
 *
 * @author xique
 */
@UtilityClass
public class ParkCarMngTypeTransform {

    /**
     * 添加车辆管理类型前端转化
     */
    public static ParkCarMngtype transformAddMngType2ParkCarMngType(MngTypeAddRequest request) {
        ParkCarMngtype parkCarMngtype = new ParkCarMngtype();
        parkCarMngtype.setParkId(SecurityUtils.getParkId());
        parkCarMngtype.setName(request.getName());
        parkCarMngtype.setCreateUser(SecurityUtils.getUserId());
        parkCarMngtype.setUpdateUser(SecurityUtils.getUserId());
        parkCarMngtype.setRemark(request.getRemark());
        if (StringUtils.isEmpty(request.getIsFee())) {
            parkCarMngtype.setIsFee("Y");
        } else {
            parkCarMngtype.setIsFee(request.getIsFee());
        }
        parkCarMngtype.setStatus(request.getStatus());
        parkCarMngtype.setMngType(request.getMngType());
        parkCarMngtype.setOverdueGraceDays(request.getOverdueGraceDays());
        parkCarMngtype.setOverdueProcessMode(request.getOverdueProcessMode());


        String[] colors = request.getColors();
        if (null != colors && colors.length > 0) {
            parkCarMngtype.setPlateColors(StringUtils.join(colors, ","));
        }
        parkCarMngtype.setIsFixedTemp(request.getIsFixedTemp());
        parkCarMngtype.setFixedDuration(request.getFixedDuration());
        parkCarMngtype.setStopTimeShowType(request.getStopTimeShowType());
        return parkCarMngtype;
    }

    /**
     * 添加车辆管理类型转化为固定车收费实体
     */
    public static ParkChargeCarFixed transformAddMngType2ParkCarChargeFixed(MngTypeAddRequest request) {
        ParkChargeCarFixed parkChargeCarFixed = new ParkChargeCarFixed();
        parkChargeCarFixed.setDayCharge(request.getDayFee());
        parkChargeCarFixed.setMonthCharge(request.getMonthFee());
        parkChargeCarFixed.setYearCharge(request.getYearFee());
        parkChargeCarFixed.setParkId(SecurityUtils.getParkId());
        parkChargeCarFixed.setName(request.getName());
        parkChargeCarFixed.setUpdateUser(SecurityUtils.getUserId());
        parkChargeCarFixed.setCreateUser(SecurityUtils.getUserId());
        return parkChargeCarFixed;
    }

    /**
     * 数据库实体转化为编辑vo实体
     */
    public static ParkCarMngTypeEditWebVo transformMngTypeEditVo(ParkCarMngtype parkCarMngtype, ParkChargeCarFixed parkChargeCarFixed) {
        ParkCarMngTypeEditWebVo parkCarMngTypeEditWebVo = new ParkCarMngTypeEditWebVo();
        if (null != parkCarMngtype) {
            parkCarMngTypeEditWebVo.setId(parkCarMngtype.getId());
            parkCarMngTypeEditWebVo.setName(parkCarMngtype.getName());
            parkCarMngTypeEditWebVo.setMngType(parkCarMngtype.getMngType());
            parkCarMngTypeEditWebVo.setStatus(parkCarMngtype.getStatus());
            parkCarMngTypeEditWebVo.setIsFee(parkCarMngtype.getIsFee());
            parkCarMngTypeEditWebVo.setOverdueGraceDays(parkCarMngtype.getOverdueGraceDays());
            parkCarMngTypeEditWebVo.setOverdueProcessMode(parkCarMngtype.getOverdueProcessMode());
            parkCarMngTypeEditWebVo.setChargeId(parkCarMngtype.getChargeId());
            parkCarMngTypeEditWebVo.setColors(StringUtils.isNotEmpty(parkCarMngtype.getPlateColors()) ? parkCarMngtype.getPlateColors().split(",") : null);
            parkCarMngTypeEditWebVo.setIsFixedTemp(parkCarMngtype.getIsFixedTemp());
            parkCarMngTypeEditWebVo.setFixedDuration(parkCarMngtype.getFixedDuration());
            parkCarMngTypeEditWebVo.setRemark(parkCarMngtype.getRemark());
            parkCarMngTypeEditWebVo.setStopTimeShowType(parkCarMngtype.getStopTimeShowType());
        }
        if (null != parkChargeCarFixed) {
            parkCarMngTypeEditWebVo.setDayFee(parkChargeCarFixed.getDayCharge());
            parkCarMngTypeEditWebVo.setMonthFee(parkChargeCarFixed.getMonthCharge());
            parkCarMngTypeEditWebVo.setYearFee(parkChargeCarFixed.getYearCharge());
        }
        return parkCarMngTypeEditWebVo;
    }

    /**
     * 编辑车辆管理类型前端转化
     */
    public static ParkCarMngtype transformEditMngType2ParkCarMngType(MngTypeEditRequest request) {
        ParkCarMngtype parkCarMngtype = new ParkCarMngtype();
        parkCarMngtype.setId(request.getId());
        parkCarMngtype.setParkId(SecurityUtils.getParkId());
        parkCarMngtype.setName(request.getName());
        parkCarMngtype.setCreateUser(SecurityUtils.getUserId());
        parkCarMngtype.setUpdateUser(SecurityUtils.getUserId());
        parkCarMngtype.setIsFee(request.getIsFee());
        parkCarMngtype.setMngType(request.getMngType());
        parkCarMngtype.setOverdueGraceDays(request.getOverdueGraceDays());
        parkCarMngtype.setOverdueProcessMode(request.getOverdueProcessMode());
        parkCarMngtype.setChargeId(request.getChargeId());
        parkCarMngtype.setStatus(request.getStatus());
        parkCarMngtype.setRemark(request.getRemark());
        String[] colors = request.getColors();
        if (null != colors && colors.length > 0) {
            parkCarMngtype.setPlateColors(StringUtils.join(colors, ","));
        }
        parkCarMngtype.setIsFixedTemp(request.getIsFixedTemp());
        parkCarMngtype.setFixedDuration(request.getFixedDuration());
        parkCarMngtype.setStopTimeShowType(request.getStopTimeShowType());
        return parkCarMngtype;
    }

    /**
     * 编辑车辆管理类型转化为固定车收费实体
     */
    public static ParkChargeCarFixed transformEditMngType2ParkCarChargeFixed(MngTypeEditRequest request) {
        ParkChargeCarFixed parkChargeCarFixed = new ParkChargeCarFixed();
        parkChargeCarFixed.setDayCharge(request.getDayFee());
        parkChargeCarFixed.setMonthCharge(request.getMonthFee());
        parkChargeCarFixed.setParkId(SecurityUtils.getParkId());
        parkChargeCarFixed.setName(request.getName());
        parkChargeCarFixed.setUpdateUser(SecurityUtils.getUserId());
        parkChargeCarFixed.setCreateUser(SecurityUtils.getUserId());
        return parkChargeCarFixed;
    }

}
